package com.sfpay.coreplatform.member.service.validate;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.sfpay.coreplatform.member.common.constant.Constants;
import com.sfpay.coreplatform.member.common.util.StringUtil;

/**
 * 
 * 
 * 类说明：公共校验方法
 *  
 * 
 * <p>
 * 详细描述：
 *   
 * 
 * @author 313717
 *   
 * CreateDate: 2012-2-8
 */
public class CommonCheckUtil {
	

	/**邮箱格式校验**/
	static final  String regMail = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; 
	
	/**
	 * 
	 *
	 * 方法说明：正则表达式校验
	 *
	 * @param str 源字符串
	 * @param reg 校验格式
	 * @return 返回true:满足格式;false:不满足格式
	 */
	public static boolean exeRegexp(String str,String reg)
	{
	   Pattern p = Pattern.compile(reg);
       Matcher m = p.matcher(str);
       return  m.matches();
	}
	 
	/**
	 * 
	 *
	 * 方法说明：对会员号检查
	 *
	 * @param memberNos   会员号数组
	 * @return
	 */
	public static boolean checkArrMemberNo(Long... memberNos  )
	{
		boolean flag = true;
		if(null != memberNos   &&  memberNos.length != 0 )
		{
			for(Long tmp : memberNos  )
			{
				if(!checkMemberNo(tmp))
				{
					break;
				}
			}
		}
		else
		{
			flag = false;
		}
		return flag;
	}
	
	/**
	 * 
	 *
	 * 方法说明：判断手机号码是否合法(手机位数11位,且为数字)
	 *
	 * @param mobile 手机
	 * @return 返回true:满足格式;false:不满足格式
	 */
	public static boolean checkMobile(String mobile)
    {
       if (StringUtil.isStrNull(mobile) || mobile.length() != Constants.MOBILE_LEN
       		|| !isNumber(mobile))
       {
    	  //非法的用户手机号码
           return false;
       }
       return true;
    }
	
	/**
	 * 
	 *
	 * 方法说明：判断密码是否合法(密码8位,且为数字)
	 *
	 * @param pwd 密码
	 * @return 返回true:满足格式;false:不满足格式
	 */
	public static boolean checkPwd(String pwd)
    {
       if (StringUtil.isStrNull(pwd) || pwd.length() != Constants.PWD_LEN
       		|| !isNumber(pwd))
       {
    	  //非法的密码
           return false;
       }
       return true;
    }
	
	/**
	 * 
	 *
	 * 方法说明：是否为数字
	 *
	 * @param string 字符串
	 * @return 返回true:满足格式;false:不满足格式
	 */
	public static boolean isNumber(String str)
   {
       if (str == null || str.length() < 1)
       {
           return false;
       }
       return CommonCheckUtil.exeRegexp(str,"^\\d*$");
   }
	
	/**
	 * 
	 *
	 * 方法说明：校验mail格式(满足^\\w*@\\w*\\.\\w*$)
	 *
	 * @param mail 邮箱
	 * @return 返回true:满足格式;false:不满足格式
	 */
	public static boolean checkMail(String mail)
   {
       if (mail == null || mail.length() < 1)
       {
           return false;
       }
       return CommonCheckUtil.exeRegexp(mail,regMail);
   }
	
	
	/**
	 * 
	 *
	 * 方法说明：
	 * 会员号校验
	 * @param memberNo会员号
	 * @return true校验成功;false校验失败
	 */
	public static boolean checkMemberNo(Long memberNo)
	{
		if(null == memberNo || String.valueOf(memberNo).length() != Constants.MEMBER_NO_LEN)
		{
			return  false;
		}
		return true;
	}
	
	public static void main(String[] args)
	{
		System.out.println(exeRegexp("hellaiyan-213@sf-express.com",regMail));
	}
}